The operation of industrial equipment such as assembly lines, machine tools and processing equipment is often governed by an automation controller in accordance with a stored program. In conventional automation controllers, the control program is stored in a memory and includes instructions which are read out in rapid sequence and executed to examine the condition of selected sensing devices on the controlled equipment, or to energize or de-energize selected operating devices on the controlled equipment contingent on the status of one or more of the examined sensing devices.
Large controllers typically consist of a number of modules with different functions assigned to each module. For example, one module may execute the user control program, another may interface the controller to the remote sensing and operating devices, and yet another module may control communications with a host computer via a local area network. This arrangement permits one or more human operators to monitor and control an industrial process via computer workstations.
When a computer workstation in an industrial control system is initialized, it may become a "subscriber" to measurements provided by a number of different sources. Each measurement source with which the workstation is associated as a subscriber will typically provide a current measurement value, and will subsequently transmit an updated value in response to each change in the measured parameter. A measurement source will often supply more than a single type of measurement to a given subscriber (i.e., destination workstation). For example, the temperature and water level of a water tank could be provided by a single measurement source and delivered to the same subscriber.
In order to make efficient use of available data transport bandwidth, multiple measurements are commonly bundled together into packets. In accordance with certain data transport protocols, a measurement source will buffer measurement data until either a complete packet is ready for transmission to the same subscriber, or until the first buffered measurement has been held in excess of a predefined time period. When a packet is eventually sent to a subscriber, the measurement source waits for an acknowledgement from the subscriber prior to sending additional packets. That is, additional measurements are not sent to the subscriber between the time at which a packet is sent until receipt of an acknowledgement. This results in relatively inefficient use of available transport bandwidth, since some waiting period occurs following the sending of each packet. In addition, the waiting period increases the average latency (i.e., the average elapsed time between the taking of a measurement and subsequent delivery of measurement data) associated with the transport of measurement data to a subscriber.
Another consideration in the design of current industrial control systems is the potential for the flow of high volumes of data and message traffic between modules. For example, in particular control systems a temperature reading may be transmitted from its source to multiple computer workstations for real-time display. A human operator may be similarly presented with real-time data from hundreds of sensors distributed throughout a factory. In addition, certain applications may be required to subscribe to and effect centralized processing of sensor data originating from numerous local and geographically distant sources.
These scenarios raise the possibility that a particular module or workstation may be overwhelmed when measurement data is received faster than it can be processed. For example, a workstation may become overloaded if it is incapable of displaying measurement data at the rate it is received. Even when data is arriving at a rate less than the maximum rate at which it may be displayed, little or no processing capacity may remain available to carry out other necessary functions (e.g., responding to user commands made via a keyboard or mouse). In industrial automation environments, rapid response to operator commands and the like is critical to maintaining control of the subject industrial process.
One potential solution to the overload problem discussed above is to simply not send data continuously to a particular destination (e.g., a workstation), but to instead require that the destination reply with a "handshaking" acknowledgment upon completing processing of each received measurement packet. Unfortunately, this results in transport inefficiencies at low data transmission rates, since each new packet will not be sent until an acknowledgment is received. That is, each received data packet will be separated by an interval equivalent to the round-trip time required for a packet to be transported between the source and destination.
Another potential approach to overcoming the overload problem could involve configuring a destination to periodically send messages indicative of the amount of data which has been processed since establishment of the data connection. One drawback of this approach is that bandwidth is consumed by the periodic messages from the destination even in the absence of an overload condition. If it is attempted to conserve bandwidth by sending such periodic messages only infrequently, it is possible that an overload condition will develop during one of the intervals between messages.
The overload problem could also be potentially solved by buffering measurements received at the destination to memory. Processing or display of the received data could then be performed asynchronously relative to receipt of the data. However, in the event of a continuing overload condition the size of the buffer will tend to increase without limit. As a result of this increase all available memory could be consumed, potentially resulting in the occurrence of a system crash or other undesirable system performance. In addition, the average data latency tends to increase in proportion to the quantity of buffered data.